package com.example.demo.services;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.port.fee.entity.FeeType;

/**
 * 费用类型服务接口
 */
public interface FeeTypeService extends IService<FeeType> {

    /**
     * 根据ID获取费用类型
     * 
     * @param feeTypeId 费用类型ID
     * @return 费用类型
     */
    FeeType getFeeTypeById(Long feeTypeId);

    /**
     * 根据费用编码获取费用类型
     * 
     * @param feeCode 费用编码
     * @return 费用类型
     */
    FeeType getFeeTypeByCode(String feeCode);

    /**
     * 分页查询费用类型
     * 
     * @param feeType  查询条件
     * @param pageNum  页码
     * @param pageSize 每页记录数
     * @return 分页结果
     */
    Page<FeeType> listFeeTypes(FeeType feeType, int pageNum, int pageSize);

    /**
     * 新增费用类型
     * 
     * @param feeType 费用类型
     * @return 是否成功
     */
    boolean addFeeType(FeeType feeType);

    /**
     * 修改费用类型
     * 
     * @param feeType 费用类型
     * @return 是否成功
     */
    boolean updateFeeType(FeeType feeType);

    /**
     * 删除费用类型
     * 
     * @param feeTypeId 费用类型ID
     * @return 是否成功
     */
    boolean deleteFeeType(Long feeTypeId);

    /**
     * 检查费用编码是否已存在
     * 
     * @param feeCode   费用编码
     * @param excludeId 排除的ID
     * @return 是否存在
     */
    boolean checkFeeCodeExists(String feeCode, Long excludeId);
}